package model

import "github.com/gogf/gf/v2/os/gtime"

type SystemRoleCreateInput struct {
	Name      string `v:"required"`
	Code      string `v:"required"`
	CreatedBy int64
}

type SystemRoleUpdateInput struct {
	Name      string `v:"required"`
	Code      string `v:"required"`
	UpdatedBy int64
}

type SystemRoleListInput struct {
	Page     int
	PageSize int
	Name     string
	Code     string
}

type SystemRoleList struct {
	Id          uint64                      `json:"id"         orm:"id"         ` //
	Name        string                      `json:"name"       orm:"name"       ` // 名称
	Code        string                      `json:"code"       orm:"code"       ` // 标识符
	CreatedAt   *gtime.Time                 `json:"created_at" orm:"created_at" ` // 创建时间
	UpdatedAt   *gtime.Time                 `json:"updated_at" orm:"updated_at" ` // 更新时间
	Menus       []*SystemRoleMenuItem       `json:"menus"`
	Permissions []*SystemRolePermissionItem `json:"permissions"`
	Users       []*SystemRoleUserItem       `json:"users"`
}

type SystemRoleMenuItem struct {
	Id       int64  `json:"id"`
	ParentId int64  `json:"parent_id"`
	Title    string `json:"title"`
	Code     string `json:"code"`
	Sort     int32  `json:"sort"`
	Icon     string `json:"icon"`
	Uri      string `json:"uri"`
	IsSHow   int32  `json:"is_show"`
	IsCache  int32  `json:"is_cache"`
	IsAffix  int32  `json:"is_affix"`
}

type SystemRolePermissionItem struct {
	Id       int64  `json:"id"`
	Name     string `json:"name"`
	Code     string `json:"code"`
	Routes   string `json:"routes"`
	Sort     int    `json:"sort"`
	ParentId int64  `json:"parent_id"`
}

type SystemRoleUserItem struct {
	Id       uint64 `json:"id"             orm:"id"             ` //
	Username string `json:"username"       orm:"username"       ` // 用户名
	Name     string `json:"name"           orm:"name"           ` // 姓名
}
